Multi-language support এর মাধ্যমে একটি অ্যাপ্লিকেশন একাধিক ভাষায় কাজ করতে সক্ষম হয়, যা আন্তর্জাতিক ব্যবহারকারীদের জন্য সুবিধাজনক। Resource File ব্যবহার করে সহজেই অ্যাপ্লিকেশনে বিভিন্ন ভাষার জন্য localization (স্থানীয়করণ) এবং globalization (বিশ্বীকরণ) বাস্তবায়ন করা যায়।
MVVM (Model-View-ViewModel) আর্কিটেকচারে, আপনি Resource Files ব্যবহার করে ViewModel এবং View-এ বিভিন্ন ভাষার সাপোর্ট যুক্ত করতে পারেন। এই প্রক্রিয়া অ্যাপ্লিকেশনটি একাধিক ভাষায় প্রদর্শিত করার সুযোগ দেয় এবং ব্যবহারকারীর প্রয়োজন অনুযায়ী ভাষা পরিবর্তন করা যায়।
Resource File (.resx) হল একটি একক ফাইল যেখানে আপনি অ্যাপ্লিকেশনের সমস্ত ভাষাগত বা স্ট্রিং ডেটা সংরক্ষণ করতে পারেন। প্রতিটি রিসোর্স ফাইলে একটি নির্দিষ্ট ভাষার জন্য কীগুলোর মান থাকবে। উদাহরণস্বরূপ, "Welcome" বা "Submit" এর মতো টেক্সটগুলি।
.resx ফাইলটি XML ফরম্যাটে থাকে এবং এতে ভাষাগত কীগুলোর মান এবং তাদের অনুবাদ সংরক্ষিত থাকে।
ASP.NET Core বা WPF অ্যাপ্লিকেশনগুলিতে Resource Files ব্যবহার করে মাল্টি-ল্যাঙ্গুয়েজ সাপোর্ট করা যেতে পারে। এখানে WPF অ্যাপ্লিকেশনকে উদাহরণ হিসেবে নেওয়া হয়েছে।
প্রথমত, বিভিন্ন ভাষার জন্য .resx ফাইল তৈরি করতে হবে।
WelcomeText
Welcome to our application!
WelcomeText
অ্যাপ্লিকেশনে স্বাগতম!
WelcomeText
Bienvenue dans notre application!
Strings.resx (English):
<data name="WelcomeText" xml:space="preserve">
<value>Welcome to our application!</value>
</data>
Strings.bn-BD.resx (Bengali):
<data name="WelcomeText" xml:space="preserve">
<value>অ্যাপ্লিকেশনে স্বাগতম!</value>
</data>
Strings.fr-FR.resx (French):
<data name="WelcomeText" xml:space="preserve">
<value>Bienvenue dans notre application!</value>
</data>
এখন আপনি ViewModel বা View-এ এই রিসোর্স ফাইল থেকে ডেটা অ্যাক্সেস করতে পারেন।
ViewModel Example:
using System.Resources;
using System.Globalization;
public class MainViewModel : INotifyPropertyChanged
{
private string _welcomeText;
public string WelcomeText
{
get => _welcomeText;
set
{
_welcomeText = value;
OnPropertyChanged(nameof(WelcomeText));
}
}
public MainViewModel()
{
// Default Culture (English)
SetLanguage("en-US");
}
public void SetLanguage(string cultureCode)
{
var culture = new CultureInfo(cultureCode);
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
// Get the resource manager
var resourceManager = new ResourceManager("YourAppNamespace.Resources.Strings", typeof(MainViewModel).Assembly);
// Set the WelcomeText based on the current culture
WelcomeText = resourceManager.GetString("WelcomeText");
}
}
এখানে:
ব্যবহারকারীর কাছে ভাষা পরিবর্তন করার সুযোগ দিতে আপনি একটি বাটন বা ড্রপডাউন মেনু ব্যবহার করতে পারেন। প্রতিবার যখন ভাষা পরিবর্তন হবে, তখন SetLanguage মেথডটি কল করা হবে এবং UI আপডেট হবে।
View (XAML) Example:
<Window x:Class="YourApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Main Window" Height="350" Width="525">
<Grid>
<TextBlock Text="{Binding WelcomeText}" FontSize="24" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Button Content="Change Language" HorizontalAlignment="Right" VerticalAlignment="Top" Width="100" Height="30" Margin="10" Command="{Binding ChangeLanguageCommand}"/>
</Grid>
</Window>
ViewModel এ কমান্ড সেট করা:
public class MainViewModel : INotifyPropertyChanged
{
public ICommand ChangeLanguageCommand { get; private set; }
public MainViewModel()
{
ChangeLanguageCommand = new RelayCommand(ChangeLanguage);
SetLanguage("en-US");
}
private void ChangeLanguage()
{
if (Thread.CurrentThread.CurrentUICulture.Name == "en-US")
SetLanguage("bn-BD");
else
SetLanguage("en-US");
}
public void SetLanguage(string cultureCode)
{
// Similar to previous code
}
}
এখানে:
Resource File ব্যবহার করে MVVM আর্কিটেকচারে multi-language support বাস্তবায়ন করা অনেক সহজ এবং সুবিধাজনক। এতে অ্যাপ্লিকেশনটি একাধিক ভাষায় সহজে কাজ করতে পারে, এবং ব্যবহারকারীদের স্থানীয় ভাষায় উপস্থাপন করা হয়। আপনি বিভিন্ন ভাষার জন্য আলাদা আলাদা .resx ফাইল তৈরি করতে পারেন এবং সেগুলির মধ্যে স্থানীয়কৃত টেক্সট ব্যবহার করতে পারেন। CultureInfo এবং ResourceManager এর মাধ্যমে ভাষা পরিবর্তন এবং ডাইনামিক টেক্সট আপডেট করা যায়।
common.read_more